home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCAISSE / Setup FASTCAISSE.exe / {app} / A faire61.sql < prev    next >
Text File  |  2004-05-16  |  4KB  |  147 lines

  1. ALTER TABLE LIGNES ADD QTE_LIVRE DECIMAL(11,2);
  2. UPDATE LIGNES SET QTE_LIVRE=QTE_INITIALE-QUANTITE WHERE QTE_INITIALE IS NOT NULL AND QUANTITE IS NOT NULL;
  3. UPDATE LIGNES SET QUANTITE=QTE_INITIALE WHERE QTE_INITIALE IS NOT NULL;
  4. ALTER TABLE LIGNES DROP QTE_INITIALE;
  5. ALTER TABLE PIECES ALTER REMISE TO REMISEHT;
  6.  
  7. ALTER PROCEDURE "MAJSTOCK"
  8. (
  9.   "INDEXP" INTEGER,
  10.   "DELTA" SMALLINT
  11. )
  12. AS
  13. DECLARE VARIABLE V1 SMALLINT;
  14. DECLARE VARIABLE I INTEGER;
  15. DECLARE VARIABLE Q DECIMAL(11,2);
  16. DECLARE VARIABLE Q1 DECIMAL(11,2);
  17. BEGIN
  18. SELECT TYPESTOCK FROM PIECES WHERE INDX=:INDEXP AND TYPESTOCK<>1 AND STATUT IN (0,3) INTO V1;
  19. IF (V1 IS NOT NULL) THEN
  20. FOR SELECT INDEXARTICLE,SUM(QUANTITE),SUM(QTE_LIVRE) FROM LIGNES
  21. JOIN ARTICLES A ON A.INDX=INDEXARTICLE AND A.SUIVI<>0
  22. WHERE INDEXPIECE=:INDEXP
  23. AND INDEXARTICLE IS NOT NULL AND INDEXARTICLE>0
  24. AND QUANTITE IS NOT NULL AND QUANTITE<>0
  25. GROUP BY INDEXARTICLE
  26. INTO :I,:Q,:Q1
  27. DO
  28. BEGIN
  29. IF (Q1 IS NULL) THEN Q1=0;
  30. IF (Q IS NULL) THEN Q=0;
  31. Q =(Q-Q1)*:DELTA;
  32. IF (Q<>0) THEN
  33.   BEGIN
  34.   IF (V1=4) THEN V1=0;
  35.    /* TICKET, FACTURE */
  36.   IF (V1=0) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q WHERE INDX=:I;
  37.   /* RESERVATION */
  38.   ELSE IF (V1=2) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,RESERVE=RESERVE+:Q WHERE INDX=:I;
  39.   /* BL */
  40.   ELSE IF (V1=3) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,BL_CLIENT=BL_CLIENT+:Q WHERE INDX=:I;
  41.   /* PRET */
  42.   ELSE IF (V1=5) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,EN_PRET=EN_PRET+:Q WHERE INDX=:I;
  43.   /* SAV */
  44.   ELSE IF (V1=6) THEN UPDATE ARTICLES SET EN_SAV=EN_SAV+:Q WHERE INDX=:I;
  45.   /* RETOUR SAV */
  46.   ELSE IF (V1=7) THEN UPDATE ARTICLES SET EN_SAV=EN_SAV-:Q WHERE INDX=:I;
  47.   /* AVOIR */
  48.   ELSE IF (V1=8) THEN UPDATE ARTICLES SET DISPO=DISPO+:Q WHERE INDX=:I;
  49.   /* COMMANDE */
  50.   ELSE IF (V1=13) THEN UPDATE ARTICLES SET EN_COMMANDE=EN_COMMANDE+:Q WHERE INDX=:I;
  51.   /* LIVRAISON */
  52.   ELSE IF (V1=14) THEN UPDATE ARTICLES SET DISPO=DISPO+:Q WHERE INDX=:I;
  53.   END
  54. END /* DO */
  55. END
  56. ;
  57.  
  58. /* Decide si une piece est verouille (statut=1) ou non (statut=0) */
  59. CREATE PROCEDURE "SET_VERROU"
  60. (
  61.   "INDXPIECE" INTEGER,
  62.   "PLIVRE" SMALLINT,
  63.   "REGROUPE" SMALLINT,
  64.   "PAYE" SMALLINT
  65. )
  66. AS
  67. DECLARE VARIABLE N INTEGER;
  68. DECLARE VARIABLE V_Z SMALLINT;
  69. DECLARE VARIABLE V_SOLDE DECIMAL(14,4);
  70. DECLARE VARIABLE V_LIVRE SMALLINT;
  71. DECLARE VARIABLE V_GROUP INTEGER;
  72. DECLARE VARIABLE V_STAT SMALLINT;
  73. DECLARE VARIABLE NEW_STAT SMALLINT;
  74. BEGIN
  75. SELECT Z,SOLDE,LIVRE,REGROUPE_DANS,STATUT FROM PIECES WHERE INDX=:INDXPIECE
  76.   INTO :V_Z,:V_SOLDE,:V_LIVRE,V_GROUP,V_STAT;
  77. /* SEUL LES PIECES NORMALES (STATUT=0) OU ARCHIVEES (STATUT=1) SONT A FAIRE */
  78. IF (V_STAT>1) THEN EXIT;
  79.  
  80. NEW_STAT=0;
  81.  
  82. /* CONDITION DE VERROUILLAGE */
  83. IF (
  84. (:PAYE=1 AND V_Z=1 AND V_SOLDE=0)
  85. OR
  86. (:PLIVRE=1 AND V_LIVRE=1)
  87. OR
  88. (REGROUPE=1 AND V_GROUP>0)
  89. ) THEN
  90.   BEGIN
  91.   NEW_STAT=1;
  92.   /*CONDITION DE DEVERROUILLAGE */
  93.   IF (
  94.   (:PAYE=1 AND V_Z=1 AND V_SOLDE<>0)
  95.   OR
  96.   (:PLIVRE=1 AND V_LIVRE=0)
  97.   ) THEN NEW_STAT=0;
  98.   END
  99.  
  100. IF (NEW_STAT<>V_STAT) THEN UPDATE PIECES SET STATUT=:NEW_STAT WHERE INDX=:INDXPIECE;
  101. EXIT;
  102. end
  103. ;
  104.  
  105. CREATE PROCEDURE "ALL_VERROU"
  106. (
  107.   "LIVRE" SMALLINT,
  108.   "REGROUPE" SMALLINT,
  109.   "PAYE" SMALLINT
  110. )
  111. AS
  112. DECLARE VARIABLE N INTEGER;
  113. BEGIN
  114. FOR SELECT INDX FROM PIECES INTO :N DO EXECUTE PROCEDURE SET_VERROU(:N,:LIVRE,:REGROUPE,:PAYE);
  115. EXIT;
  116. end
  117. ;
  118.  
  119. ALTER PROCEDURE "SET_LIVRE"
  120. (
  121.   "INDXPIECE" INTEGER
  122. )
  123. AS
  124. DECLARE VARIABLE N INTEGER;
  125. DECLARE VARIABLE OLD_L SMALLINT;
  126. DECLARE VARIABLE NEW_L SMALLINT;
  127. BEGIN
  128. SELECT TYPEPIECE,LIVRE FROM PIECES WHERE INDX=:INDXPIECE INTO :N,:OLD_L;
  129. IF (N IN (2,3,13)) THEN  /* TESTER SI QTE */
  130.   begin
  131.   SELECT COUNT(*) FROM LIGNES
  132.   WHERE INDEXPIECE=:INDXPIECE AND QUANTITE IS NOT NULL AND QTE_LIVRE IS NOT NULL AND QUANTITE<>QTE_LIVRE
  133.   INTO :N;
  134.   /* N=0 donc pas de lignes ou la quantitΘ livrΘ diffΦre de la quantitΘ initiale, donc piΦce livrΘe */
  135.   IF (N=0) THEN NEW_L=1; ELSE NEW_L=0;
  136.   END
  137. ELSE NEW_L=NULL;
  138. IF (OLD_L IS NULL AND NEW_L IS NULL) THEN EXIT;
  139. IF (OLD_L IS NULL OR NEW_L IS NULL OR (OLD_L<>NEW_L)) THEN UPDATE PIECES SET LIVRE=:NEW_L WHERE INDX=:INDXPIECE;
  140. end
  141. ;
  142.  
  143. EXECUTE PROCEDURE ALL_LIVRE;
  144. EXECUTE PROCEDURE ALL_VERROU(1,1,1);
  145. SET GENERATOR VERSION_BASE TO 61;
  146.  
  147.